if (owner == nil) then return end if (owner) then owner = owner end local player = owner IR15 = function(char) if (char == nil) then char = player.Character end if (char:FindFirstChild("Torso") ~= nil) then return false else return true end end local main = player.Character R15 = nil if IR15(player.Character) == true then R15 = true Character = { Head = main.Head, LeftFoot = main:WaitForChild("LeftFoot"), RightFoot = main:WaitForChild("RightFoot"), LeftHand = main:WaitForChild("LeftHand"), RightHand = main:WaitForChild("RightHand"), LeftUpperArm = main:WaitForChild("LeftUpperArm"), LeftLowerArm = main:WaitForChild("LeftLowerArm"), RightUpperArm = main:WaitForChild("RightUpperArm"), RightLowerArm = main:WaitForChild("RightLowerArm"), LeftUpperLeg = main:WaitForChild("LeftUpperLeg"), LeftLowerLeg = main:WaitForChild("LeftLowerLeg"), RightUpperLeg = main:WaitForChild("RightUpperLeg"), RightLowerLeg = main:WaitForChild("RightLowerLeg"), UpperTorso = main:WaitForChild("UpperTorso"), LowerTorso = main:WaitForChild("LowerTorso") } else R15 = false Character = { Head = main.Head, Torso = main.Torso, LeftArm = main:WaitForChild("Left Arm"), RightArm = main:WaitForChild("Right Arm"), LeftLeg = main:WaitForChild("Left Leg"), RightLeg = main:WaitForChild("Right Leg") } end local Holder = Instance.new("Model", script) Holder.Name = "Char" local humanoid = Instance.new("Humanoid", Holder) humanoid.Parent = Holder humanoid.DisplayName = owner.Name.."'s Friend" --Shirt, Pants and T-Shirt/Shirt Graphic support for name, shirtorpant in ipairs(main:GetChildren()) do if shirtorpant:IsA("Shirt") or shirtorpant:IsA("Pants") or shirtorpant:IsA("ShirtGraphic") then local clonedThing = shirtorpant:Clone() clonedThing.Parent = Holder end end --Hat/Hair support for name, Acc in ipairs(main:GetChildren()) do if Acc:IsA("Accessory") then if Acc.AccessoryType == Enum.AccessoryType.Hat or Acc.AccessoryType == Enum.AccessoryType.Hair then local cor = coroutine.wrap(function() if (Acc.Handle.AccessoryWeld) then local new = Acc:Clone() new.Parent = Holder new.Handle.AccessoryWeld.Part1 = Holder:WaitForChild("Head") end end) cor() end end end --Moving faces support for name, Acc in ipairs(main:GetChildren()) do pcall(function() if (Acc.Name == "Head") then if (Acc:FindFirstChildOfClass("SurfaceAppearance")) then local texture = Acc:FindFirstChildOfClass("SurfaceAppearance"):Clone() texture.Parent = Holder.Head end end end) end --Back support for name, Acc in ipairs(main:GetChildren()) do if Acc:IsA("Accessory") then if Acc.AccessoryType == Enum.AccessoryType.Back then local cor = coroutine.wrap(function() if (Acc.Handle.AccessoryWeld) then if (R15 == true) then local new = Acc:Clone() new.Parent = Holder new.Handle.AccessoryWeld.Part1 = Holder:WaitForChild("UpperTorso") else local new = Acc:Clone() new.Parent = Holder new.Handle.AccessoryWeld.Part1 = Holder:WaitForChild("Torso") end end end) cor() end end end --Waist Support for name, Acc in ipairs(main:GetChildren()) do if Acc:IsA("Accessory") then if Acc.AccessoryType == Enum.AccessoryType.Waist then local cor = coroutine.wrap(function() if (Acc.Handle.AccessoryWeld) then if (R15 == true) then local new = Acc:Clone() new.Parent = Holder new.Handle.AccessoryWeld.Part1 = Holder:WaitForChild("LowerTorso") else local new = Acc:Clone() new.Parent = Holder new.Handle.AccessoryWeld.Part1 = Holder:WaitForChild("Torso") end end end) cor() end end end --Face Support for name, Acc in ipairs(main:GetChildren()) do if Acc:IsA("Accessory") then if Acc.AccessoryType == Enum.AccessoryType.Face then local cor = coroutine.wrap(function() if (Acc.Handle.AccessoryWeld) then local new = Acc:Clone() new.Parent = Holder new.Handle.AccessoryWeld.Part1 = Holder:WaitForChild("Head") end end) cor() end end end --Neck Support for name, Acc in ipairs(main:GetChildren()) do if Acc:IsA("Accessory") then if Acc.AccessoryType == Enum.AccessoryType.Neck then local cor = coroutine.wrap(function() if (Acc.Handle.AccessoryWeld) then local new = Acc:Clone() new.Parent = Holder new.Handle.AccessoryWeld.Part1 = Holder:WaitForChild("Torso") end end) cor() end end end owner.Chatted:Connect(function(msg) game:GetService("Chat"):Chat(Holder.Head, msg, Enum.ChatColor.Red) end) --Decal support and mesh support for name, obj in ipairs(main:GetDescendants()) do local cor = coroutine.wrap(function() if obj:IsA("Decal") or obj:IsA("SpecialMesh") then local newClone = obj:Clone() if obj.Parent:IsA("BasePart") then newClone.Parent = Holder:WaitForChild(obj.Parent.Name) end end end) cor() end --HumanoidChildren for _, c in ipairs(main:FindFirstChildOfClass("Humanoid"):GetChildren()) do pcall(function() if (c) then local t = coroutine.wrap(function() local new = c:Clone() new.Parent = Holder.Humanoid end) t() end end) end --Spoof un-usefull instances for name, part in ipairs(main:GetChildren()) do if part:IsA("BasePart") then local clone = part:Clone() clone.Parent = Holder clone.Anchored = true clone.CanCollide = false clone.Material = "SmoothPlastic" for _, child in ipairs(clone:GetChildren()) do --if child.Name == "HatAttachment" then --return --child. --else child:Destroy() --end end end end --Animations for _, part in ipairs(Holder:GetChildren()) do if part:IsA("BasePart") then part.CanCollide = false part.CanQuery = false part.CanTouch = false game:GetService("RunService").Heartbeat:Connect(function() pcall(function() if (part.Rotation) then part.Rotation = player.Character[part.Name].Rotation end part.Position = player.Character[part.Name].Position + Vector3.new(5,0,0) end) end) end end